A workload comprises a set of virtualized and/or non-virtualized servers, which have redundancies and dependencies among the servers. A workload is multi-tiered and has overall availability requirements and performance/throughput requirements at each tier. A user manually assigning server level availabilities which satisfy a workload level availability requirement in a cost-effective manner is inconvenient and difficult. Accordingly, there is a need to automatically determine server level availabilities so that the workload level availability requirement is achieved and the cost of achieving the workload level availability requirement is minimized.